package com.example.yx.demo24;

import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;

@Configuration
public class WebConfig {

    @ControllerAdvice
    //作用：对所有控制器提供功能增强，
    // 有三种：@ExecptionHandler，用于处理异常；@ModelAttribute，方法的返回值会作为模型数据添加到模型中，@InitBinder，帮助添加一些自定义的类型转换器
    static class MyControllerAdvice{
        @InitBinder
        public void binder3(WebDataBinder webDataBinder) {
//            webDataBinder.addCustomFormatter();
        }
    }

    //在@Controller里添加的是局部的，只针对这个控制器
    @Controller
    static class Controller1 {
        @InitBinder
        public void binder1(WebDataBinder webDataBinder) {
//            webDataBinder.addCustomFormatter();
        }

        public void foo() {}
    }

    @Controller
    static class Controller2 {
        @InitBinder
        public void binder21(WebDataBinder webDataBinder) {
//            webDataBinder.addCustomFormatter();
        }

        @InitBinder
        public void binder22(WebDataBinder webDataBinder) {
//            webDataBinder.addCustomFormatter();
        }

        public void bar() {}
    }
}
